/**
 * 1、创建线程池的四种方法
 *
 * | 方法                                  | 说明                                                         |
 * | ------------------------------------- | ------------------------------------------------------------ |
 * | `Executors.newCachedThreadPool()`     | 创建一个可缓存的线程池，如果线程池长度超过了处理的需要，可以灵活回收空闲线程，若没有可回收的就新建线程 |
 * | `Executors.newFixedThreadPool(3)`     | 创建一个定长的线程池，可以控制线程的最大并发数；超出的线程则在队列中等待 |
 * | `Executors.newScheduledThreadPool(3)` | 也是创建一个定长线程池，支持定时、周期性的任务执行           |
 * | `Executors.newSingleThreadExecutor()` | 创建一个单线程化的线程池，只会用唯一的一个工作线程来执行任务，保证所有任务按照指定顺序执行(先入先出、优先级等) |
 */
package cn.dm.example.threadPool;